package com.zhaoxi.project.sys.mapper;

import java.util.List;

import com.zhaoxi.project.sys.domain.SysDictData;
import com.zhaoxi.project.sys.domain.SysDictType;
import org.apache.ibatis.annotations.Mapper;

/**
 * 字典表 数据层
 *
 * @author zhaoxi
 */
@Mapper
public interface SysDictTypeMapper {
    /**
     * 1、字典类型管理：通过租户id查询字典类型列表（xieleilei 12.6）
     *
     * @param dictType 字典类型信息
     * @return 字典类型集合信息
     */
    public List<SysDictType> selectDictTypeList(SysDictType dictType);

    /**
     * 2、字典类型管理：条件搜索区域，通过租户id获取字典类型下拉框（xieleilei 12.6）
     *
     * @return 字典类型集合信息
     */
    public List<SysDictType> selectDictTypeAll(SysDictType dictType);

    /**
     * 3、字典类型管理——新增字典类型：保证当前租户字典类型唯一，并且存入缓存（xieleilei 12.6）
     *
     * @param dictType 字典类型信息
     * @return 结果
     */
    public int insertDictType(SysDictType dictType);

    /**
     * 3-1、字典类型管理——新增字典类型时关键字校检：校验当前租户的字典关键字是否唯一（xieleilei 12.6）
     *
     * @param dictType 字典类型
     * @return 结果
     */
    public SysDictType checkDictTypeUnique(String dictType);

    /**
     * 3-2、批量插入：新建租户时拷贝字典类型（xieleilei 12.6）
     *
     * @param sysDictTypes 字典类型
     * @return 结果
     */
    public int batchSysDictType(List<SysDictType> sysDictTypes);

    /**
     * 4、字典类型管理——修改字典类型（xieleilei 12.6）
     *
     * @param dictType 字典类型信息
     * @return 结果
     */
    public int updateDictType(SysDictType dictType);

    /**
     * 4-1、字典类型管理——修改字典类型：根据字典类型ID查询信息（xieleilei 12.6）
     *
     * @param dictId 字典类型ID
     * @return 字典类型
     */
    public SysDictType selectDictTypeById(Long dictId);

    /**
     * 5、通过字典ID删除字典信息
     *
     * @param dictId 字典ID
     * @return 结果
     */
    public int deleteDictTypeById(Long dictId);

    /**
     * 6、批量删除字典类型信息
     *
     * @param dictIds 需要删除的字典ID
     * @return 结果
     */
    public int deleteDictTypeByIds(Long[] dictIds);

    /**
     * 根据字典类型查询信息（未被使用）
     *
     * @param dictType 字典类型
     * @return 字典类型
     */
    public SysDictType selectDictTypeByType(String dictType);

    int deleteDictTypeByTenantId(Long tenantId);
}
